'use strict';

/**
 * @description
 *
 * Módulo principal de nuestra aplicación.
 *
 * Dependencias de AngularJS: ngRoute, mm.foundation
 * Dependencias de aplicación: mainController
 *
 * @type {module|*}
 */
var superApp = angular.module('superApp',[
        'ngRoute',
        /*'ngAnimate', */
        'ngResource', 
        'ngCookies',
        'superAppFactory'
    ]);

superApp.run(function($rootScope, $location, $cookieStore, UtilitiesFactory, $log) {
    $rootScope.UtilitiesFactory = UtilitiesFactory;

    $rootScope.$on('$routeChangeStart', function(event, next, current) {
        if (($cookieStore.get('isConnected') == false) || 
                ($cookieStore.get('isConnected') == null)) {            
            $location.path('/login');
        } else {
            if (next.islogin) {
                $location.path('/users');
            }
        }
    })
});

/**
 * @description
 *
 * Configuración de nuestra aplicación.
 *
 * Dependencias: $routeProvider
 *
 */
superApp.config(
    ['$routeProvider',
        /**
         * @description
         *
         * Método para configurar las rutas de nuestra aplicación.
         * Asigna una vista y un controlador por url.
         *
         * RUTA: /users
         *  VISTA: usersList.html
         *  CONTROLADOR: userCtrl
         *
         * @param {!$routeProvider}
         */
        function($routeProvider) {
            $routeProvider.
            when('/login', {
                templateUrl : 'views/user/login.html',
                controller  : 'AuthController',
                islogin     : true
            }).
            when('/users', {
                templateUrl : 'views/user/userList.html',
                controller  : 'UserController'
            }).
            when('/users/create', {
                templateUrl: 'views/user/userCreate.html',
                controller: 'userCreateController'
            })./*
            when('/users/edit/:userId', {
                templateUrl: 'views/userUpdate.html',
                controller: 'userUpdateCtrl'
            }).
            when('/patients', {
                templateUrl: 'views/patientList.html',
                controller: 'patientCtrl'
            }).
            when('/patients/create', {
                templateUrl: 'views/patientCreate.html',
                controller: 'patientCreateCtrl'
            }).*/
            otherwise({
                redirectTo: '/login'
            });
        }
    ],
    /**
    *   Como se necesita consumir una API en un dominio diferente,
    *   se configura el CORS y asi lograr q no se rechace la petición
    */
    ['$httpProvider', 
        function($httpProvider) {
            $httpProvider.defaults.useXDomain = true;
            delete $httpProvider.defaults.headers.common['X-Requested-With'];
        }
    ]
);
